home *** CD-ROM | disk | FTP | other *** search
/ IRIX Installation Tools & Overlays 1999 May / SGI IRIX Installation Tools & Overlays 1999 May - Disc 2.iso / relnotes / ViewKit_dev / ch3.z / ch3
Text File  |  1999-04-19  |  47KB  |  1,123 lines

  1.  
  2.  
  3.  
  4.                                   - 1 -
  5.  
  6.  
  7.  
  8.        3.  _N_e_w__s_i_n_c_e__I_R_I_X__6_._2
  9.  
  10.  
  11.        _T_h_i_s _s_o_f_t_w_a_r_e _i_s _i_s _u_p_w_a_r_d_s-_c_o_m_p_a_t_i_b_l_e _f_r_o_m _t_h_e _p_r_e_v_i_o_u_s_l_y
  12.        _r_e_l_e_a_s_e_d _v_e_r_s_i_o_n.  _A_n_y _s_u_c_h _c_o_m_p_a_t_i_b_i_l_i_t_y _p_r_o_b_l_e_m _w_o_u_l_d _b_e
  13.        _a_n _i_m_p_o_r_t_a_n_t _b_u_g.  _I_f _y_o_u _d_i_s_c_o_v_e_r _o_n_e, _p_l_e_a_s_e _r_e_p_o_r_t _i_t
  14.        _i_m_m_e_d_i_a_t_e_l_y _s_o _i_t _c_a_n _b_e _f_i_x_e_d _A_S_A_P.
  15.  
  16.        _N_e_w _f_e_a_t_u_r_e_s _w_i_l_l _n_o_t _h_a_v_e _e_i_t_h_e_r _t_h_e_i_r _A_P_I _o_r _A_B_I _f_r_o_z_e_n
  17.        _u_n_t_i_l _w_e _g_e_t _n_e_a_r _a _f_o_r_m_a_l _r_e_l_e_a_s_e.  _I_n _t_h_e _m_e_a_n_t_i_m_e, _i_t _i_s
  18.        _p_o_s_s_i_b_l_e _t_h_a_t _A_P_I _a_n_d/_o_r _A_B_I _m_a_y _c_h_a_n_g_e _a_s _w_e _g_e_t _m_o_r_e
  19.        _e_x_p_e_r_i_e_n_c_e _w_i_t_h _t_h_e_s_e _n_e_w _f_e_a_t_u_r_e_s.  _W_e _s_h_a_l_l _n_o_t _i_n_t_r_o_d_u_c_e
  20.        _g_r_a_t_u_i_t_o_u_s _b_r_e_a_k_a_g_e, _b_u_t _w_e _a_r_e _a_l_s_o _n_o_t _y_e_t _b_o_u_n_d _b_y
  21.        _c_o_m_p_a_t_i_b_i_l_i_t_y _c_o_n_s_t_r_a_i_n_t_s _i_n _o_u_r _e_f_f_o_r_t _t_o _m_a_k_e _t_h_i_s
  22.        _s_o_f_t_w_a_r_e _b_e _a_s _g_o_o_d _a_s _i_t _c_a_n _b_e _b_y _r_e_l_e_a_s_e _t_i_m_e.
  23.  
  24.  
  25.  
  26.        3.1  _S_i_g_n_i_f_i_c_a_n_t__B_u_g__F_i_x_e_s__S_i_n_c_e__I_R_I_X__6_._2
  27.  
  28.  
  29.  
  30.        3.1.1  _l_i_b_v_k__N_o__L_o_n_g_e_r__U_s_e_s__V_k_F_o_r_m_a_t_(_)  lllliiiibbbbvvvvkkkk has been
  31.        changed to use its own private copy of VVVVkkkkFFFFoooorrrrmmmmaaaatttt.  This
  32.        prevents conflicts with any application use of VVVVkkkkFFFFoooorrrrmmmmaaaatttt.
  33.  
  34.  
  35.        3.1.2  _C_o_r_e _d_u_m_p _w_h_e_n _d_e_l_e_t_i_n_g _a_n _o_b_j_e_c_t _f_r_o_m _i_t_s _c_a_l_l_b_a_c_k
  36.        _l_i_s_t  Deleting an object from within its own executing code
  37.        is, in general, a Bad Idea.  Deleting a VkCallbackObject
  38.        from within a callback it has called amounts to just such a
  39.        problem.  VkCallbackList has been fixed to that it will not
  40.        itself core dump in this case, but there remains no
  41.        assurance that something else in libvk will not core dump.
  42.        The problem is that library code may need to use the object
  43.        to do other things after the callback list has been called.
  44.  
  45.  
  46.        3.1.3  _V_i_e_w_k_i_t__V_i_s_u_a_l_s__H_a_n_d_l_i_n_g  Viewkit had a number of
  47.        places where it wrongly used default visual information.
  48.        ViewKit visual handling and visual inheritance has now been
  49.        entirely cleaned up.  See the description of the new
  50.        VkVisual class (below) for more information.
  51.  
  52.  
  53.        3.1.4  _V_k_S_i_m_p_l_e_W_i_n_d_o_w__W_i_n_d_o_w__S_t_a_t_e__S_e_t_t_i_n_g__a_n_d__T_r_a_c_k_i_n_g
  54.        There were a number of problems with how VkSimpleWindow
  55.        changed from one window state to another, and how it tracked
  56.        the state.  These have now been fixed so that they work and
  57.        Viewkit is ICCCM-compliant, the VkSimpleWindow manual page
  58.        has a much improved description of these things, and a
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.                                   - 2 -
  71.  
  72.  
  73.  
  74.        related new member function, getVisualState(), has been
  75.        added.
  76.  
  77.        Affected VkSimpleWindow functions are:  hide(), show(),
  78.        visible(), iconify, open, iconic(), and the callback
  79.        routines that handle MapNotify and UnmapNotify.  The code
  80.        now properly generates synthetic UnmapNotify events for the
  81.        window manger.  WM_HINTS.initial_state is updated whenever
  82.        moving from WithdrawnState to either IconicState or
  83.        NormalState.
  84.  
  85.        We believe that applications will be unaffected by this fix
  86.        (except that some things that failed to work correctly
  87.        before now will).  Since the old code did not work
  88.        correctly, it is possible that an application may have
  89.        inadvertantly depended on a bug, and as a result will now
  90.        have changed behavior.
  91.  
  92.  
  93.        3.2  _N_e_w__C_l_a_s_s_e_s__&__O_t_h_e_r__E_n_h_a_n_c_e_m_e_n_t_s__S_i_n_c_e__I_R_I_X__6_._2
  94.  
  95.  
  96.  
  97.        3.2.1  _D_e_f_a_u_l_t__V_i_e_w_K_i_t__h_e_l_p__i_s__n_o_w__i_n__l_i_b_v_k  The default
  98.        help routines and been moved into libvk, and the help entry
  99.        points are weak symbols.  That means it is no longer
  100.        necessary to link with libvkhelp unless you want help other
  101.        than the default ViewKit help.  libvkhelp still exists, so
  102.        that Makefiles will work without change.  However, it is
  103.        empty and is no longer necessary.
  104.  
  105.        Help libraries contain normal (i.e. not weak) symbols.  The
  106.        linker will resolve references to point to the strong
  107.        symbols of the added help library.  To do so, the linker
  108.        needs to see the strong symbols.  If the additional help
  109.        library is a DSO, there is no problem.  The SGI help
  110.        library, libhelpmsg, is now a DSO.
  111.  
  112.        If you are providing a help archive library of your own, you
  113.        need to either convert it to a DSO or else link it with the
  114.        ld option "-all".  (If you are using CC to link, the option
  115.        is "-Wl,-all".)  If you use -_a_l_l, you probably want to turn
  116.        it back off by using -_n_o_n_e after the library is loaded.
  117.  
  118.        It is also possible to specify the behaviour of the help
  119.        system at run time rather than link time by adding callbacks
  120.        to the help-related callback list of VkApp.  See _m_a_n _V_k_A_p_p
  121.        and <_V_k/_V_k_A_p_p._h> for more details.
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.                                   - 3 -
  137.  
  138.  
  139.  
  140.        3.2.2  _n_3_2__I_m_a_g_e_s__I_n_s_t_a_l_l_e_d__B_y__D_e_f_a_u_l_t  As of IRIX 6.3, this
  141.        is the SGI default.
  142.  
  143.  
  144.        3.2.3  _V_k_S_i_m_p_l_e_W_i_n_d_o_w_:_:_g_e_t_V_i_s_u_a_l_S_t_a_t_e_(_)  getVisualState() is
  145.        a new function that returns the X11 window state.  This
  146.        allows determining the window state with a single call.
  147.        Previously the application had to combine the results of
  148.        calls to visible() and iconic(), leading to confusion.
  149.  
  150.  
  151.        3.2.4  _V_k_P_r_o_m_p_t_D_i_a_l_o_g_:_:_s_e_t_T_e_x_t_(_)_  setText() is a new
  152.        function that allows setting an initial value in the prompt
  153.        dialog's text field.
  154.  
  155.  
  156.        3.2.5  _N_e_w__c_l_a_s_s__-__V_k_V_i_s_u_a_l  VkVisual is a new class that
  157.        simplifies applications' dealing X11 visuals.  It is now
  158.        easy to do such things as:
  159.  
  160.           +o Semantically choose the best visual for an application.
  161.  
  162.           +o Control interactions between widgets and X visuals.
  163.  
  164.           +o Get a suitable window for creating a GC or a pixmap.
  165.  
  166.  
  167.        3.2.6  _V_i_e_w_K_i_t__V_i_s_u_a_l__H_a_n_d_l_i_n_g__I_m_p_r_o_v_e_m_e_n_t_s
  168.  
  169.        3.2.6.1  _V_i_s_u_a_l_s__B_u_g_s__h_a_v_e__B_e_e_n__F_i_x_e_d  ViewKit itself has
  170.        taken advantage of VkVisual to fix a number of visuals
  171.        shortcomings.  We known of no remaining bugs in ViewKit's
  172.        handling of visuals.
  173.  
  174.  
  175.        3.2.6.2  _V_i_s_u_a_l_s__A_r_e__C_o_n_i_s_t_e_n_t_l_y__I_n_h_e_r_i_t_e_d  ViewKit now
  176.        automatically defaults to properly inheriting visual
  177.        information from the widget parent for all Shell widgets it
  178.        creates.  ViewKit also automatically uses the correct depth
  179.        when doing such things as creating GC's and pixmaps
  180.        (including those routines that call Xpm).
  181.  
  182.        Note: libXpm itself has not been changed - it remains up to
  183.        the caller take care of any visuals issues.
  184.  
  185.  
  186.        3.2.6.3  _A_d_d_i_t_i_o_n_a_l__C_o_n_s_t_r_u_c_t_o_r__f_o_r__V_k_A_p_p__T_a_k_e_s__a_n__A_r_g_L_i_s_t
  187.        This is to allow an application to set the top-level shell's
  188.        resources.  Unfortunately, the visual resource cannot set
  189.        this way, because the Display is not yet known.  For a
  190.        solution to that, see the next section.
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.                                   - 4 -
  203.  
  204.  
  205.  
  206.        3.2.6.4  _P_u_t_t_i_n_g _A_n _E_n_t_i_r_e _A_p_p_l_i_c_a_t_i_o_n _I_n _a _N_o_n-_D_e_f_a_u_l_t
  207.        _V_i_s_u_a_l  Since the Display cannot be known before the call to
  208.        VkApp::run(), a new feature has been added - the application
  209.        can supply a preRealizeFunction().  This function, if
  210.        present, is called just before VkApp is going to realize the
  211.        application's top-level window.  By that time the VkApp
  212.        class has been constructed, and the Display is known.  The
  213.        application can then set the top level Shell's visual
  214.        resources, either by using the new class VkVisual, or
  215.        otherwise.  This makes it easy to put an entire application
  216.        into a non-default visual, such as 24-bit TreuColor.
  217.  
  218.        Alternatively, one can use "useOverlayApps" to put the
  219.        application in the deepest available overlay visual.  How
  220.        good an idea this is depends in part on how deep the deepest
  221.        overlay visual is.
  222.  
  223.        See _m_a_n _V_k_A_p_p for details.
  224.  
  225.  
  226.        3.2.6.5  _M_e_n_u_s__i_n__t_h_e__O_v_e_r_l_a_y_s  How good an idea this is
  227.        depends in part on how deep the deepest overlay visual is.
  228.        As of IRIX 6.2 (ViewKit 1.4), the resource "useOverlayMenus"
  229.        put pulldown menus in the 2-bit popup planes.  It now puts
  230.        all menus created by ViewKit in the deepest available
  231.        overlay visual.  Using the deepest available overlay visual
  232.        helps if menus have colorful things, such as checkmarks.
  233.  
  234.        (The application remains responsible for the visual
  235.        information for any menus it creates directly, rather than
  236.        by using ViewKit.)
  237.  
  238.  
  239.        3.2.6.5.1  _D_e_m_o _P_r_o_g_r_a_m _F_o_r _P_u_l_l_d_o_w_n _M_e_n_u_s _I_n _T_h_e _P_o_p_u_p
  240.        _P_l_a_n_e_s  Running the example program "vkmenu" shows that the
  241.        expose counter increments each time a menubar item is
  242.        selected and dismissed.  Running "vkmenu -useOverlayMenus"
  243.        shows that the expose counter does not change when pulldown
  244.        menus appear and disappear, since no expose events are
  245.        generated.
  246.  
  247.           +o For more information about the demo program, see
  248.             /_u_s_r/_s_h_a_r_e/_s_r_c/_V_i_e_w_K_i_t/_M_e_n_u_s/_R_E_A_D_M_E.
  249.  
  250.           +o For more information about the affected ViewKit
  251.             classes, see _m_a_n _V_k_A_p_p(_3_X), _m_a_n _V_k_M_e_n_u(_3_X), _m_a_n
  252.             _V_k_S_u_b_M_e_n_u(_3_X).
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.                                   - 5 -
  269.  
  270.  
  271.  
  272.        3.2.6.6  _D_i_a_l_o_g_s__i_n__t_h_e__O_v_e_r_l_a_y_s  There is a new resource,
  273.        "useOverlayDialogs", that puts all dialogs created by
  274.        ViewKit into the overlay planes.  How good an idea this is
  275.        depends in part on how deep the deepest overlay visual is.
  276.  
  277.        (The application remains responsible for the visual
  278.        information for any dialogs it creates directly, rather than
  279.        by using ViewKit.)
  280.  
  281.        There is no way for an application to specify creation-time
  282.        arguments with the standard ViewKit dialog API.  Two
  283.        functions have been added to allow setting them before the
  284.        first dialog is created: setArgs() and setVisual().  For
  285.        more information a see _m_a_n _V_k_D_i_a_l_o_g_M_a_n_a_g_e_r(_3_X).
  286.  
  287.        _I_n _t_h_e _p_a_s_t, _a_n_y _V_i_e_w_K_i_t _a_p_p_l_i_c_a_t_i_o_n _h_a_d _t_o _l_i_n_k _w_i_t_h _s_o_m_e
  288.        _h_e_l_p _l_i_b_r_a_r_y.  _l_i_b_v_k_h_e_l_p _h_a_d _t_o _b_e _l_i_n_k_e_d _i_f _n_o _o_t_h_e_r _o_n_e
  289.        _w_a_s.  _N_o_w _t_h_e _c_o_n_t_e_n_t_s _o_f _t_h_e _d_e_f_a_u_l_t _h_e_l_p _l_i_b_r_a_r_y,
  290.        _l_i_b_v_k_h_e_l_p, _h_a_v_e _b_e_e_n _m_o_v_e_d _i_n_t_o _l_i_b_v_k.  _T_h_e _d_e_f_a_u_l_t _h_e_l_p
  291.        _e_n_t_r_y _p_o_i_n_t_s _a_r_e _w_e_a_k _s_y_m_b_o_l_s.  _T_h_i_s _m_e_a_n_s:
  292.  
  293.           +o _I_t _i_s _n_o _l_o_n_g_e_r _m_a_n_d_a_t_o_r_y _t_o _l_i_n_k _w_i_t_h _a_n_y _h_e_l_p
  294.             _l_i_b_r_a_r_y.  _I_f _y_o_u _d_o _n_o_t, _y_o_u _w_i_l_l _a_u_t_o_m_a_t_i_c_a_l_l_y _g_e_t _t_h_e
  295.             _d_e_f_a_u_l_t _h_e_l_p _f_a_c_i_l_i_t_y.
  296.  
  297.           +o _S_o _t_h_a_t _e_x_i_s_t_i_n_g _M_a_k_e_f_i_l_e_s _w_i_l_l _n_o_t _b_r_e_a_k, _l_i_b_v_k_h_e_l_p _i_s
  298.             _s_t_i_l_l _p_r_o_v_i_d_e_d, _b_u_t _o_n_l_y _a_s _a _n_u_l_l _l_i_b_r_a_r_y.  _S_i_n_c_e
  299.             _l_i_b_v_k_h_e_l_p _i_s _n_o _l_o_n_g_e_r _n_e_e_d_e_d, _i_t _s_h_o_u_l_d _b_e _r_e_m_o_v_e_d
  300.             _f_r_o_m _l_i_n_k _l_i_n_e_s.  _L_i_n_k_i_n_g _w_i_t_h _i_t _i_s _h_a_r_m_l_e_s_s, _b_u_t _d_o_e_s
  301.             _p_u_t _a_n _u_n_n_e_c_e_s_s_a_r_y _i_t_e_m _o_n _t_h_e _a_p_p_l_i_c_a_t_i_o_n'_s _l_i_b_l_i_s_t.
  302.  
  303.           +o _L_i_n_k_i_n_g _w_i_t_h _a_n_y _o_t_h_e_r _h_e_l_p _l_i_b_r_a_r_y _i_s _u_n_c_h_a_n_g_e_d.
  304.             _S_i_n_c_e _t_h_e _s_y_m_b_o_l_s _i_n _t_h_e _d_e_f_a_u_l_t _l_i_b_r_a_r_y _a_r_e _n_o_w _w_e_a_k
  305.             _s_y_m_b_o_l_s, _t_h_e _e_x_p_l_i_c_i_t_l_y _l_i_n_k_e_d _l_i_b_r_a_r_y _w_i_l_l _b_e _t_h_e _o_n_e
  306.             _t_h_a_t _i_s _u_s_e_d.
  307.  
  308.           +o _I_f _y_o_u _l_i_n_k _w_i_t_h _a _h_e_l_p _l_i_b_r_a_r_y, _a_n_d _i_f _y_o_u_r _u_s_e _t_h_e
  309.             -_q_u_i_c_k_s_t_a_r_t__i_n_f_o _s_w_i_t_c_h, _y_o_u _m_a_y _s_e_e _w_a_r_n_i_n_g_s _f_r_o_m
  310.             _l_d(_1) _a_b_o_u_t _t_h_e _h_e_l_p _e_n_t_r_y _p_o_i_n_t_s (_S_G_I_H_e_l_p_I_n_i_t,
  311.             _S_G_I_H_e_l_p_M_s_g,  _S_G_I_H_e_l_p_I_n_d_e_x_M_s_g) _p_r_e-_e_m_p_t_i_n_g _t_h_o_s_e _i_n
  312.             _l_i_b_v_k.  _T_h_e_s_e _m_e_s_s_a_g_e_s _a_r_e _n_o_r_m_a_l.  _T_h_e_y _w_i_l_l _n_o_t
  313.             _a_p_p_e_a_r _u_n_l_e_s_s _y_o_u _u_s_e -_q_u_i_c_k_s_t_a_r_t__i_n_f_o.
  314.  
  315.        _T_h_e_r_e _i_s _a _n_e_w _h_e_l_p _l_i_b_r_a_r_y, _l_i_b_v_k_w_e_b_h_e_l_p.
  316.  
  317.  
  318.        _3._2._7  _S_u_p_p_o_r_t__f_o_r__C_o_n_t_r_o_l_l_i_n_g__W_i_d_t_h__o_f__T_a_b_s__i_n__a__T_a_b_P_a_n_e_l
  319.        We have had several requests for providing a way to have
  320.        tabs in different tab decks all have the same tab width.  We
  321.        have added several new functions to VkTabPanel to provide
  322.        this.
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.                                   - 6 -
  335.  
  336.  
  337.  
  338.           +o ggggeeeettttTTTTaaaabbbbWWWWiiiiddddtttthhhh(((()))) - gets the width of a specific tab.
  339.  
  340.           +o ggggeeeettttMMMMaaaaxxxxTTTTaaaabbbbWWWWiiiiddddtttthhhh(((()))) - gets the width of the widest tab.
  341.  
  342.           +o mmmmaaaattttcccchhhhTTTTaaaabbbbWWWWiiiiddddtttthhhh (((()))) - makes the width of the labels in two
  343.             or more VkTabPanels be the same.
  344.  
  345.           +o sssseeeettttTTTTaaaabbbbWWWWiiiiddddtttthhhh(((()))) - sets the with of the tabs in a single
  346.             tab panel.
  347.        There is also a demo,
  348.        ////uuuussssrrrr////sssshhhhaaaarrrreeee////ssssrrrrcccc////VVVViiiieeeewwwwKKKKiiiitttt////CCCCoooommmmppppoooonnnneeeennnnttttssss////ttttaaaabbbb....cccc++++++++.  Read the source
  349.        -- there are several comments about the new calls.  By
  350.        reading the comments and playing around with the code, you
  351.        should be able to easily make it all work for you.
  352.  
  353.  
  354.        3.2.8  _N_e_w__m_a_c_r_o___f_a_m_i_l_y__V_k_A_s_s_e_r_t_*  Macros have been added
  355.        to give increased control over assertions in your code.  See
  356.        _m_a_n _V_k_A_s_s_e_r_t and _V_k/_V_k_F_u_n_c_t_i_o_n._h>.
  357.  
  358.  
  359.        3.3  _O_v_e_r_v_i_e_w__o_f__t_h_e__I_R_I_X__6_._2__r_e_l_e_a_s_e
  360.  
  361.           +o n32 and 64-bit libraries are now provided.
  362.  
  363.           +o  Debug library naming has been changed to make the
  364.             debug libraries much easier to use.  To use a debugging
  365.             version of the ViewKit libraries, install the
  366.             ViewKit_dev.sw.debug, and then simply set the
  367.             LLLLDDDD____LLLLIIIIBBBBRRRRAAAARRRRYYYY____PPPPAAAATTTTHHHH environment variable to /usr/lib/debug
  368.             before running your program.  The debugging library has
  369.             full symbols, so stack traces will be more informative.
  370.             The debugging viewkit library also prints various
  371.             warnings, and makes liberal use of assertions to catch
  372.             misuse of the the library.
  373.  
  374.  
  375.           +o To allow for future versioning, libXpm.so has been
  376.             renamed to libXpm.so.1, and libXpm.so is now a symbolic
  377.             link to libXpm.so.1.
  378.  
  379.           +o libXpm is now version 3.4f (previously it was version
  380.             3.2g).
  381.  
  382.  
  383.        3.4  _V_i_e_w_K_i_t__B_u_g__F_i_x_e_s
  384.  
  385.        This chapter lists the major bugs fixed in ViewKit since the
  386.        IRIX 5.3 release.
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.                                   - 7 -
  401.  
  402.  
  403.  
  404.           +o Corrected a number of references to the default
  405.             colormap to use the correct colormap.
  406.  
  407.           +o We have made a systematic effort, using _p_u_r_i_f_y, to find
  408.             and fix memory leaks.  All known ViewKit-induced memory
  409.             leaks and malloc problems have been fixed.
  410.  
  411.           +o _V_k_F_i_l_e_S_e_l_e_c_t_i_o_n_D_i_a_l_o_g can now set a filter on multiple
  412.             dialogs.
  413.  
  414.           +o _V_k_C_o_m_p_o_n_e_n_t::_a_f_t_e_r_R_e_a_l_i_z_e_H_o_o_k now gets called for
  415.             dialogs.
  416.  
  417.           +o The file selection dialog now sets its directory
  418.             correctly, even if there is more than one file
  419.             selection dialog up at a time.
  420.  
  421.           +o Several manual page errors and omissions have been
  422.             fixed.
  423.  
  424.           +o Several classes that did not have manual pages now have
  425.             them.
  426.  
  427.           +o Several schemes problems have been corrected.
  428.  
  429.           +o _V_k_C_o_m_p_o_n_e_n_t now calls afterRealizeHook(), even if the
  430.             parent is already realized when show() is called.
  431.  
  432.           +o _V_k_D_o_u_b_l_e_B_u_f_f_e_r now draws the initial display correctly,
  433.             even if it was not realized when it was drawn.
  434.  
  435.           +o _V_k_F_o_r_k_I_O::_c_l_e_a_r_H_i_s_t_o_r_y no longer goes into an infinite
  436.             loop.
  437.  
  438.           +o _V_k_G_r_a_p_h now returns the correct node after a node is
  439.             removed.
  440.  
  441.           +o _V_k_G_r_a_p_h now passes back the X event where appropriate
  442.             and it has an event.
  443.  
  444.           +o Menu items are now in right place when addAction called
  445.             after menu built.
  446.  
  447.           +o Initial menu pane hide now works.
  448.  
  449.           +o Option menu getIndex() now returns 0 initially, not -1.
  450.  
  451.           +o Fixed the core dump in _V_k_T_a_b_P_a_n_e_l when adding or
  452.             deleting tabs.
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.                                   - 8 -
  467.  
  468.  
  469.  
  470.           +o _V_k_T_a_b_P_a_n_e_l's popup menu can no longer be torn off --
  471.             doing so was a problem.
  472.  
  473.           +o Fixed the core dump when _V_k_T_a_b_P_a_n_e_l was deleted while a
  474.             work proc was pending.
  475.  
  476.           +o Set the background of the _V_k_T_a_b_P_a_n_e_l drawing area to
  477.             eliminate color flashing.
  478.  
  479.           +o xpm.h is now installed in /usr/include/X11, where most
  480.             applications expect it.  To maintain compatibility with
  481.             IRIX 5.3 and earlier, there is with a symlink from
  482.             /usr/include/Vk.
  483.  
  484.           +o Xpm has been upgraded to xpm version 3.4.  This fixes
  485.             some core dumps.
  486.  
  487.           +o _V_k_C_r_e_a_t_e_X_P_M_P_i_x_m_a_p now handles non-default Visuals
  488.             correctly.
  489.  
  490.           +o Changed demo file installation to be owner=root,
  491.             group=sys, modes 755(directories) and 644(files.  This
  492.             change was in deference to those who felt that looser
  493.             permissions presented a security problem.
  494.  
  495.  
  496.  
  497.  
  498.  
  499.  
  500.        3.5  _n_3_2__a_n_d__6_4_-_b_i_t__l_i_b_r_a_r_i_e_s
  501.  
  502.        n32 versions of all ViewKit libraries are provided in
  503.        /usr/lib32.  64-bit versions of all ViewKit libraries are
  504.        provided in /usr/lib64.  For instructions on building the
  505.        ViewKit demo programs in either n32 or 64-bits, see the
  506.        top-level README and Makefile.
  507.  
  508.  
  509.        3.6  _D_e_b_u_g__l_i_b_r_a_r_i_e_s__h_a_v_e__b_e_e_n__r_e_n_a_m_e_d__f_o_r__e_a_s_i_e_r__u_s_e
  510.  
  511.        There are no more ViewKit *_d.a debug libraries, requiring
  512.        relinking your application to use them.
  513.  
  514.        Debug libraries are now DSO's that are installed in the
  515.        debug subdirectory below the corresponding normal DSO.  The
  516.        library names are identical.  This means that an application
  517.        can link normally, rather than with a special debug library.
  518.        By setting the environment variables LLLLDDDD____LLLLIIIIBBBBRRRRAAAARRRRYYYY____PPPPAAAATTTTHHHH,
  519.        LLLLDDDD____LLLLIIIIBBBBRRRRAAAARRRRYYYYNNNN33332222____PPPPAAAATTTTHHHH or LLLLDDDD____LLLLIIIIBBBBRRRRAAAARRRRYYYY66664444____PPPPAAAATTTTHHHH, the application can
  520.        run with the debug library.
  521.  
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.                                   - 9 -
  533.  
  534.  
  535.  
  536.        For example, to run with the 64-bit debug libraries, just:
  537.  
  538.           +o Link normally, such as with "-L/usr/lib64 -lvk".
  539.  
  540.           +o When you want to run with the debug libraries, set the
  541.             environment variable LLLLDDDD____LLLLIIIIBBBBRRRRAAAARRRRYYYY66664444____PPPPAAAATTTTHHHH to
  542.             /usr/lib64/debug.
  543.  
  544.        As always, the debug libraries have a number of aaaasssssssseeeerrrrtttt
  545.        statements.  These are intended to check both the
  546.        application's use of the library and internal library
  547.        consistency.  The assertions are not as complete as we would
  548.        like, but we are adding more over time.
  549.  
  550.  
  551.        3.7  _C_l_a_s_s__E_n_h_a_n_c_e_m_e_n_t_s
  552.  
  553.        We have been very careful to maintain binary compatibility
  554.        when enhancing a class.  Some changes introduce entirely
  555.        new, non-conflicting, behavior for the class.  Other changes
  556.        introduce a choice between a new behavior and the way the
  557.        class has behaved in the past.  In such a case, to preserve
  558.        compatibility, the default remains to run the old way.  An
  559.        application has to do something, such as set a resource, to
  560.        get the new behavior.
  561.  
  562.  
  563.        3.7.1  _V_k_A_p_p__E_n_h_a_n_c_e_m_e_n_t_s  For more information about any of
  564.        these enhancements, see _m_a_n _V_k_A_p_p(_3_X).
  565.  
  566.  
  567.        3.7.1.1  _V_k_A_p_p_:_:_r_u_n_(_)  There is a new debugging resource,
  568.        _p_r_i_n_t_E_v_e_n_t.  If set non-zero, all events are printed to
  569.        stderr.
  570.  
  571.        _V_k_A_p_p::_r_u_n  and _V_k_A_p_p:_h_a_n_d_l_e_P_e_n_d_i_n_g_E_v_e_n_t_s() now have
  572.        increased event-handling flexibility.  They now allow the
  573.        application more control over how the X event loop is
  574.        handled, without the need to override the ViewKit routine.
  575.  
  576.        Until now overriding _V_k_A_p_p::_r_u_n() has been dangerous
  577.        (because of potential compatibility problems).  It continues
  578.        to be the case that very few applications have a legitimate
  579.        need to override _V_k_A_p_p::_r_u_n().  However, there is now a safe
  580.        way for those applications that _d_o have this need to do so.
  581.        See the following topics in the VkApp(3) manual page:
  582.        _r_u_n(), _r_u_n__f_i_r_s_t(), _r_u_n_O_n_e_E_v_e_n_t(), _h_a_n_d_l_e_P_e_n_d_i_n_g_E_v_e_n_t_s, and
  583.        _h_a_n_d_l_e_O_n_e_P_e_n_d_i_n_g_E_v_e_n_t.
  584.  
  585.        There is a new demo program that shows the improved event
  586.        handling.  See /_u_s_r/_s_h_a_r_e/_s_r_c/_V_i_e_w_K_i_t/_B_a_s_i_c/_r_u_n._c++.
  587.  
  588.  
  589.  
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.                                   - 10 -
  599.  
  600.  
  601.  
  602.        Running this program will clearly show which code is doing
  603.        what art of the job.
  604.  
  605.  
  606.        3.7.1.2  _V_k_A_p_p_:_:_u_s_e_S_c_h_e_m_e_s_(_)  The static function
  607.        _V_k_A_p_p::_u_s_e_S_c_h_e_m_e_s(_c_h_a_r *_v_a_l) has been added to let schemes
  608.        be turned on or off programmatically.  Schemes defaults to
  609.        being on.  For example,
  610.  
  611.           +o uuuusssseeeeSSSScccchhhheeeemmmmeeeessss((((""""aaaallllllll"""")))) will turn schemes on
  612.  
  613.           +o uuuusssseeeeSSSScccchhhheeeemmmmeeeessss((((""""nnnnoooonnnneeee"""")))) will turn schemes off
  614.  
  615.  
  616.        3.7.1.3  _N_e_w__r_e_s_o_u_r_c_e_:__q_u_i_t_M_o_d_e  _q_u_i_t_M_o_d_e is a new string-
  617.        valued resource (default value: eeeeaaaacccchhhh).
  618.  
  619.        _V_k_A_p_p::_q_u_i_t_Y_o_u_r_s_e_l_f() calls _o_k_T_o_Q_u_i_t for each window.  In
  620.        the past (and still true by default) if any of them returns
  621.        success, then the application quits.  If, however, _q_u_i_t_M_o_d_e
  622.        is set to aaaallllllll then the application quits if, and only if,
  623.        all windows agree to.
  624.  
  625.  
  626.        _N_O_T_E: _t_h_i_s _d_o_e_s _n_o_t _a_p_p_l_y _w_h_e_n _t_h_e _w_i_n_d_o_w _m_a_n_a_g_e_r _t_r_i_e_s _t_o
  627.        _c_l_o_s_e _a _w_i_n_d_o_w.  _T_o _c_o_n_t_r_o_l _t_h_a_t _b_e_h_a_v_i_o_r, _a_n _a_p_p_l_i_c_a_t_i_o_n
  628.        _m_u_s_t _o_v_e_r_r_i_d_e VkSimpleWindow::handleWmDeleteMessage() _a_n_d/_o_r
  629.        VkSimpleWindow::handleWmQuitMessage().  _F_r_o_m _t_h_e_r_e, _t_h_e
  630.        _a_p_p_l_i_c_a_t_i_o_n _c_a_n _c_a_l_l VkApp::quitYourself() _i_f _i_t _w_a_n_t_s _t_o.
  631.  
  632.  
  633.  
  634.        3.7.1.4  _V_k_A_p_p_:_:_s_e_t_F_a_l_l_b_a_c_k_s_(_)  _s_t_a_t_i_c _v_o_i_d
  635.        _V_k_A_p_p::_s_e_t_F_a_l_l_b_a_c_k_s(_c_h_a_r **_f_a_l_l_b_a_c_k_s) sets _f_a_l_l_b_a_c_k_s as the
  636.        _s_p_e_c_i_f_i_c_a_t_i_o_n__l_i_s_t needed to call
  637.        _X_t_A_p_p_S_e_t_F_a_l_l_b_a_c_k_R_e_s_o_u_r_c_e_s(_3_X).
  638.  
  639.  
  640.        3.7.2  _V_k_C_o_m_p_o_n_e_n_t__E_n_h_a_n_c_e_m_e_n_t_s  For more information about
  641.        any of these enhancements, see _m_a_n _V_k_C_o_m_p_o_n_e_n_t(_3_X).
  642.  
  643.  
  644.        3.7.2.1  _V_k_C_o_m_p_o_n_e_n_t_:_:_l_o_a_d_O_b_j_e_c_t_(_)  _s_t_a_t_i_c _V_k_C_o_m_p_o_n_e_n_t
  645.        *_l_o_a_d_O_b_j_e_c_t(_c_o_n_s_t _c_h_a_r *_n_a_m_e, _W_i_d_g_e_t _p_a_r_e_n_t, _c_o_n_s_t _c_h_a_r
  646.        *_c_l_a_s_s_N_a_m_e, _c_o_n_s_t _c_h_a_r *_f_i_l_e_n_a_m_e) supports dynamic loading
  647.        of objects, as supported by RapidApp.  Objects must be set
  648.        up properly for this to work.  See _m_a_n _V_k_C_o_m_p_o_n_e_n_t and _m_a_n
  649.        _V_k_C_a_l_l_b_a_c_k_O_b_j_e_c_t or the RapidApp documentation for details.
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.                                   - 11 -
  665.  
  666.  
  667.  
  668.        3.7.2.2  _V_k_C_o_m_p_o_n_e_n_t_:_:_s_e_t_D_e_f_a_u_l_t_R_e_s_o_u_r_c_e_s_(_)  _v_o_i_d
  669.        _V_k_C_o_m_p_o_n_e_n_t::_s_e_t_D_e_f_a_u_l_t_R_e_s_o_u_r_c_e_s ( _c_o_n_s_t _W_i_d_g_e_t _w, _c_o_n_s_t
  670.        _S_t_r_i_n_g *) now supports a syntax (a prepended "+" or "-")
  671.        that qualifies resources for such things as overriding SGI
  672.        Schemes.
  673.  
  674.  
  675.        3.7.3  _V_k_D_i_a_l_o_g_M_a_n_a_g_e_r_:_:_p_r_e_p_o_s_t_C_a_l_l_b_a_c_k  This callback is
  676.        invoked just before a dialog is displayed.
  677.  
  678.        For more information see _m_a_n _V_k_D_i_a_l_o_g_M_a_n_a_g_e_r(_3_X).
  679.  
  680.  
  681.        3.7.4  _V_k_D_i_a_l_o_g_M_a_n_a_g_e_r_:_:_e_n_a_b_l_e_C_a_n_c_e_l_B_u_t_t_o_n_(_B_o_o_l_e_a_n_)  This
  682.        sets whether or not the default will be to provide a CANCEL
  683.        button on dialogs that are subsequently posted.  It allows
  684.        an application to tell when a dialog was closed without
  685.        pressing a button, such as by a window manager action.
  686.  
  687.        For more information see _m_a_n _V_k_D_i_a_l_o_g_M_a_n_a_g_e_r(_3_X).
  688.  
  689.  
  690.        3.7.5  _V_k_M_e_n_u__E_n_h_a_n_c_e_m_e_n_t_s  For more information about any
  691.        of these enhancements, see _m_a_n _V_k_M_e_n_u(_3_X).
  692.  
  693.  
  694.        3.7.5.1  _V_k_M_e_n_u_:_:_s_e_t_M_e_n_u_B_a_r__(_)  _V_k_M_e_n_u::_s_e_t_M_e_n_u_B_a_r
  695.        (_V_k_M_e_n_u_D_e_s_c *_m_e_n_u_D_e_s_c, _X_t_P_o_i_n_t_e_r _c_l_i_e_n_t_D_a_t_a) is an
  696.        overloaded entry to allow controlling default client data.
  697.        This effectively allows passing zero as client data (by
  698.        setting the default client data to zero).  There remains no
  699.        way to tell passing an explicit zero from just not
  700.        initializing the client data in the _V_k_M_e_n_u_D_e_s_c structure.
  701.  
  702.  
  703.        3.7.5.2  _V_k_M_e_n_u_:_:_g_e_t_L_a_b_e_l__(_)  _V_k_M_e_n_u_I_t_e_m::_g_e_t_L_a_b_e_l(_v_o_i_d) was
  704.        added for symmetry with the existing _V_k_M_e_n_u_I_t_e_m::_s_e_t_L_a_b_e_l().
  705.  
  706.  
  707.        3.7.5.3  _V_k_M_e_n_u__s_e_p_a_r_a_t_o_r_s__c_a_n__n_o_w__h_a_v_e__n_a_m_e_s  Menu
  708.        separators can now have names.  This is so that they can be
  709.        manipulated just like any other menu item.
  710.  
  711.  
  712.        3.7.6  _V_k_M_e_n_u_B_a_r_:_:_s_h_o_w_H_e_l_p_P_a_n_e_(_)
  713.        _V_k_M_e_n_u_B_a_r::_s_h_o_w_H_e_l_p_P_a_n_e(_B_o_o_l_e_a_n _s_h_o_w = _T_R_U_E) controls
  714.        whether the Help pane is visible or not.
  715.  
  716.        For more information see _m_a_n _V_k_M_e_n_u_B_a_r(_3_X).
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.                                   - 12 -
  731.  
  732.  
  733.  
  734.        3.7.7  _V_k_N_a_m_e_L_i_s_t__E_n_h_a_n_c_e_m_e_n_t_s  For more information about
  735.        any of these enhancements, see _m_a_n _V_k_N_a_m_e_L_i_s_t(_3_X).
  736.  
  737.  
  738.        3.7.7.1  _V_k_N_a_m_e_L_i_s_t__h_a_s__n_e_w__m_e_m_b_e_r__f_u_n_c_t_i_o_n_s  Some new
  739.        utility functions have been added.
  740.  
  741.           +o _V_k_N_a_m_e_L_i_s_t::_g_e_t_I_n_d_e_x();
  742.  
  743.           +o _V_k_N_a_m_e_L_i_s_t::_r_e_m_o_v_e(_c_h_a_r *);
  744.  
  745.           +o _V_k_N_a_m_e_L_i_s_t::_r_e_m_o_v_e(_i_n_t _i_n_d_e_x, _i_n_t _c_o_u_n_t=_1);
  746.  
  747.  
  748.        3.7.7.2  _P_r_o_b_l_e_m__w_i_t_h__V_k_N_a_m_e_L_i_s_t__o_p_e_r_a_t_o_r_s  Some of the
  749.        _V_k_N_a_m_e_L_i_s_t operators are a problem, because they allocate
  750.        memory that must later be freed by the caller.  Because
  751.        operators are often used in expressions, this is an open
  752.        invitation to memory leaks.  Several corresponding new
  753.        conventional functions have been added.  They each make it
  754.        more obvious that there might be something to be freed.  One
  755.        of them (_g_e_t_S_u_b_s_t_r_i_n_g_s()) is also considerably more
  756.        efficient.  Applications are strongly encouraged to switch
  757.        to the new conventional functions.
  758.  
  759.           +o _V_k_N_a_m_e_L_i_s_t::_g_e_t_S_t_r_i_n_g();
  760.  
  761.           +o _V_k_N_a_m_e_L_i_s_t::_g_e_t_S_u_b_s_t_r_i_n_g_s();
  762.  
  763.           +o _V_k_N_a_m_e_L_i_s_t::_g_e_t_S_t_r_i_n_g_T_a_b_l_e();
  764.  
  765.           +o _V_k_N_a_m_e_L_i_s_t::_g_e_t_X_m_S_t_r_i_n_g_T_a_b_l_e()
  766.  
  767.           +o _V_k_N_a_m_e_L_i_s_t::_f_r_e_e_X_m_S_t_r_i_n_g_T_a_b_l_e()
  768.  
  769.  
  770.        3.7.8  _V_k_R_u_n_O_n_c_e_2__n_o_t_e  For more information about _V_k_R_u_n_O_n_c_e
  771.        or _V_k_R_u_n_O_n_c_e_2, see _m_a_n _V_k_R_u_n_O_n_c_e(_3_X) and _m_a_n _V_k_R_u_n_O_n_c_e_2(_3_X).
  772.  
  773.        _V_k_R_u_n_O_n_c_e_2 is very similar to _V_k_R_u_n_O_n_c_e, but there are
  774.        subtle differences between these two classes.  _V_k_R_u_n_O_n_c_e_2
  775.        adds several new member functions.  It also does error
  776.        checking that _V_k_R_u_n_O_n_c_e does not.
  777.  
  778.        We suggest that all applications that can do so use
  779.        _V_k_R_u_n_O_n_c_e_2, rather than _V_k_R_u_n_O_n_c_e.
  780.  
  781.  
  782.        3.7.9  _V_k_S_i_m_p_l_e_W_i_n_d_o_w__E_n_h_a_n_c_e_m_e_n_t_s  For more information
  783.        about any of these enhancements, see _m_a_n _V_k_S_i_m_p_l_e_W_i_n_d_o_w(_3_X).
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.                                   - 13 -
  797.  
  798.  
  799.  
  800.        3.7.9.1  _V_k_S_i_m_p_l_e_W_i_n_d_o_w__p_r_o_v_i_d_e_s__a_c_c_e_s_s__t_o__Q_u_i_c_k_H_e_l_p
  801.        QuickHelp provides a status line at the bottom of the window
  802.        and/or a popup balloon help.  The feature is controlled by X
  803.        resources, so all that is needed to enable it for any
  804.        particular application is the right settings in the
  805.        application's X default resources file.
  806.  
  807.        Note: There is also an experimental programmatic interface
  808.        to QuickHelp.  _T_h_i_s _i_n_t_e_r_f_a_c_e, _n_e_w _i_n _I_R_I_X _6._2, _i_s _s_u_b_j_e_c_t
  809.        _t_o _c_h_a_n_g_e _i_n _a _f_u_t_u_r_e _r_e_l_e_a_s_e.
  810.  
  811.        _d_i_s_p_l_a_y_H_e_l_p_S_t_r_i_n_g(...) and _d_i_s_p_l_a_y_H_e_l_p_R_e_s_o_u_r_c_e(...)  have
  812.        had their final argument changed in a completely compatible
  813.        way.  It was a Boolean, where FALSE meant no delay and TRUE
  814.        meant to use the default delay.  Now it is of type
  815.        _d_e_l_a_y_T_i_m_e, which for compatibility is typdef'd to be the
  816.        same as a Boolean.  This takes the popup delay time in
  817.        hundredths of a second.  This ranges from 0-255, except that
  818.        for compatibility 1 means to use the default time.
  819.  
  820.  
  821.        3.7.9.2  _V_k_S_i_m_p_l_e_W_i_n_d_o_w_:_:_g_e_t_W_i_n_d_o_w_(_)  _s_t_a_t_i_c _V_k_S_i_m_p_l_e_W_i_n_d_o_w
  822.        *_g_e_t_W_i_n_d_o_w(_V_k_C_o_m_p_o_n_e_n_t *_c_o_m_p_o_n_e_n_t) returns the
  823.        _V_k_S_i_m_p_l_e_W_i_n_d_o_w object (or subclass) that contains the given
  824.        _V_k_C_o_m_p_o_n_e_n_t.
  825.  
  826.  
  827.        3.7.10  _V_k_T_a_b_P_a_n_e_l__I_m_p_r_o_v_e_d__A_p_p_e_a_r_a_n_c_e  _V_k_T_a_b_P_a_n_e_l
  828.        previously had a flat appearance for its tabs, rather than
  829.        providing tabs with a shaded 3D appearance.  This was
  830.        considered more of a bug to be fixed than a feature.
  831.        _V_k_T_a_b_P_a_n_e_l tab drawing has now been improved so that the
  832.        tabs have an (optional) 3D appearance.
  833.  
  834.        The new 3D appearance is controlled by a new _V_k_T_a_b_P_a_n_e_l
  835.        resource, _u_s_e_3_D_T_a_b_s (default TRUE).  If the resource is set
  836.        to TRUE, the tabs are drawn with a shaded 3D appearance.
  837.  
  838.        _V_k_T_a_b_P_a_n_e_l also has two new member functions so that
  839.        applications can cooperate with the improved (fixed)
  840.        appearance.  Applications that construct pixmaps for tab
  841.        labels should set _u_s_e_3_D_T_a_b_s = _T_R_U_E and use the new functions
  842.        to get their backgrounds.
  843.  
  844.           +o Pixel getSelectedTabBG()
  845.  
  846.           +o Pixel getUnselectedTabBG()
  847.  
  848.        The member function GC gc() is now deprecated, in favor of
  849.        the new functions, because it is meaningful only with
  850.        _u_s_e_3_D_T_a_b_s = _F_A_L_S_E.  Apps that construct pixmaps for tab
  851.  
  852.  
  853.  
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.                                   - 14 -
  863.  
  864.  
  865.  
  866.        labels should set _u_s_e_3_D_T_a_b_s = _T_R_U_E and use the new functions
  867.        to get their backgrounds.
  868.  
  869.        For more information see _m_a_n _V_k_T_a_b_P_a_n_e_l(_3_X).
  870.  
  871.  
  872.        3.7.11  _V_k_W_i_n_d_o_w__E_n_h_a_n_c_e_m_e_n_t_s  For more information about
  873.        any of these enhancements, see _m_a_n _V_k_W_i_n_d_o_w(_3_X).
  874.  
  875.  
  876.        3.7.11.1  _V_k_W_i_n_d_o_w_:_:_g_e_t_W_i_n_d_o_w_(_)  _s_t_a_t_i_c _V_k_W_i_n_d_o_w
  877.        *_g_e_t_W_i_n_d_o_w(_V_k_C_o_m_p_o_n_e_n_t *_c_o_m_p_o_n_e_n_t) returns the _V_k_W_i_n_d_o_w
  878.        object (or subclass) that contains the given _V_k_C_o_m_p_o_n_e_n_t.
  879.  
  880.  
  881.        3.7.11.2  _V_k_W_i_n_d_o_w_:_:_g_e_t_M_e_n_u_(_)  _s_t_a_t_i_c _V_k_M_e_n_u_B_a_r
  882.        *_g_e_t_M_e_n_u(_V_k_C_o_m_p_o_n_e_n_t *_c_o_m_p_o_n_e_n_t) returns the menubar used by
  883.        the window that contains the given _V_k_C_o_m_p_o_n_e_n_t.
  884.  
  885.  
  886.        3.8  _N_e_w__C_l_a_s_s_e_s
  887.  
  888.        The following classes are new since IRIX 5.3.
  889.  
  890.  
  891.        3.8.1  _V_k_C_o_l_o_r_C_h_o_o_s_e_r_D_i_a_l_o_g  For more information, see _m_a_n
  892.        _V_k_C_o_l_o_r_C_h_o_o_s_e_r_D_i_a_l_o_g(_3_X).
  893.  
  894.  
  895.        3.8.2  _V_k_C_u_t_P_a_s_t_e  The _V_k_C_u_t_P_a_s_t_e class provides programmers
  896.        with a simple and clean API for implementing cut and paste
  897.        and drag and drop functionality in their application.
  898.  
  899.        For more information, see _m_a_n _V_k_C_u_t_P_a_s_t_e(_3_X).
  900.  
  901.  
  902.        3.8.3  _V_k_M_o_v_i_e_B_u_t_t_o_n  _V_k_M_o_v_i_e_B_u_t_t_o_n is a multimedia button
  903.        component that plays a movie within a pushable button.  This
  904.        class is most effective with a short movie that acts as an
  905.        animation.
  906.  
  907.        For more information, see _m_a_n _V_k_M_o_v_i_e_B_u_t_t_o_n(_3_X).
  908.  
  909.  
  910.        3.8.4  _V_k_M_o_v_i_e_P_l_a_y_e_r  _V_k_M_o_v_i_e_P_l_a_y_e_r is a multimedia
  911.        component that plays a movie and supports simple operations
  912.        such as playing, stopping, rewinding.
  913.  
  914.        For more information, see _m_a_n _V_k_M_o_v_i_e_P_l_a_y_e_r(_3_X).
  915.  
  916.  
  917.  
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.                                   - 15 -
  929.  
  930.  
  931.  
  932.        3.8.5  _V_k_P_r_o_g_r_e_s_s_D_i_a_l_o_g  This is a new SGI Style Guide-
  933.        compliant class for displaying the approximate amount of a
  934.        task that has been completed.
  935.  
  936.        For more information, see _m_a_n _V_k_P_r_o_g_r_e_s_s_D_i_a_l_o_g(_3_X).
  937.  
  938.  
  939.        3.8.6  _V_k_S_o_A_p_p  _V_k_S_o_A_p_p is a class used by all Inventor
  940.        ViewKit applications to handle initialization.
  941.  
  942.        For more information, see _m_a_n _V_k_S_o_A_p_p(_3_X).
  943.  
  944.  
  945.        3.8.7  _V_k_T_a_b_b_e_d_D_e_c_k  _V_k_T_a_b_b_e_d_D_e_c_k combines a _V_k_T_a_b_P_a_n_e_l and
  946.        a _V_k_D_e_c_k, to give an appearance somewhat like a set of
  947.        tabbed cards.
  948.  
  949.        For more information, see _m_a_n _V_k_T_a_b_b_e_d_D_e_c_k(_3_X).
  950.  
  951.  
  952.  
  953.        3.9  _N_e_w__G_l_o_b_a_l__F_u_n_c_t_i_o_n_s
  954.  
  955.        The following global functions are new since IRIX 5.3.
  956.  
  957.  
  958.        3.9.1  _V_k_S_e_t_H_i_g_h_l_i_g_h_t_i_n_g_P_i_x_m_a_p  For more information, see
  959.        _m_a_n _V_k_S_e_t_H_i_g_h_l_i_g_h_t_i_n_g_P_i_x_m_a_p(_3_X).
  960.  
  961.  
  962.        3.9.2  _V_k_C_o_n_f_i_g_u_r_e_W_i_n_d_o_w  For more information, see _m_a_n
  963.        _V_k_C_o_n_f_i_g_u_r_e_W_i_n_d_o_w(_3_X).
  964.  
  965.  
  966.        3.10  _N_e_w__l_i_b_r_a_r_y_:__l_i_b_v_k_S_G_I
  967.  
  968.        libvk is a portable library.  There are versions available
  969.        for most Unix workstations.
  970.  
  971.        libvkSGI has been created for classes that philosophically
  972.        belong in libvk, but which are SGI-specific.  In this
  973.        release, libvkSGI includes:
  974.  
  975.  
  976.        3.11  _N_e_w__l_i_b_r_a_r_y_:__l_i_b_V_k_E_Z_._a
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.                                   - 16 -
  995.  
  996.  
  997.  
  998.        3.12  _l_i_b_X_p_m__u_p_g_r_a_d_e_s
  999.  
  1000.  
  1001.  
  1002.        3.12.1  _X_p_m__d_o_c_u_m_e_n_t_a_t_i_o_n  We now pass through the
  1003.        documentation files that we get with Xpm.  These files are
  1004.        shipped as the subsystem _V_i_e_w_K_i_t__d_e_v._m_a_n._x_p_m-_d_o_c, and are
  1005.        installed in /usr/share/doc/Xpm.  The new on-line _X_p_m(_3_x)
  1006.        man page also tells where to find these documents.
  1007.  
  1008.        3.12.2  _l_i_b_X_p_m_._s_o__h_a_s__b_e_c_o_m_e__l_i_b_X_p_m_._s_o_._1  To provide for
  1009.        future incompatible libXpm DSO's, libXpm.so is now called
  1010.        libXpm.so.1.  There is a symbolic link, libXpm.so, that
  1011.        points to libXpm.so.1.  This should cause no problems for
  1012.        any existing application.
  1013.  
  1014.  
  1015.        3.12.3  _l_i_b_X_p_m__i_s__n_o_w__v_e_r_s_i_o_n__3_._4  The IRIX 5.3 release
  1016.        contained Xpm version 3.2g.  SGI never released Xpm version
  1017.        3.3, which was incompatible with 3.2.  The current release
  1018.        is Xpm 3.4, which is both source and binary compatible with
  1019.        Xpm version 3.2.
  1020.  
  1021.  
  1022.        3.12.4  _X_p_m__E_n_h_a_n_c_e_m_e_n_t_s__S_i_n_c_e__I_R_I_X__5_._3__(_X_p_m__3_._2_g_)
  1023.  
  1024.           +o The colorTable member of the XpmAttributes structure is
  1025.             now an (XpmColor*) in order to be compatible with an
  1026.             XpmImage colorTable.  However in order to be backward
  1027.             compatible this field is cast to (XpmColor **), which
  1028.             is equivalent to (char ***), when it is used with the
  1029.             old flags XpmInfos and XpmReturnInfos.  To handle the
  1030.             new type, the new flags XpmColorTable and
  1031.             XpmReturnColorTable have been defined.
  1032.  
  1033.             NOTE: code that directly accesses the
  1034.             XpmAttributes.colorTable, such as "... =
  1035.             XpmAttributes.colorTable[i][1]" will need to be changed
  1036.             to something like "... =
  1037.             XpmAttributes.colorTable[i].symbolic"
  1038.  
  1039.           +o The XpmInfo struct has been extended to avoid having to
  1040.             deal with an XpmAttributes at the lower level.  The
  1041.             idea is that all the data stored in an Xpm file can be
  1042.             retrieved through both an XpmImage and an XpmInfo
  1043.             struct.
  1044.  
  1045.           +o XpmUndefPixel is defined and exported by xpm.h in order
  1046.             to let clients providing their own colorTable when
  1047.             writing out an Xpm file.
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.                                   - 17 -
  1061.  
  1062.  
  1063.  
  1064.           +o A new function and a new define should help client
  1065.             figuring out with which Xpm library version they are
  1066.             working.  These are XpmIncludeVersion and
  1067.             XpmLibraryVersion().
  1068.  
  1069.           +o XPM1 files are supported.
  1070.  
  1071.           +o A new function is provided to get an error string
  1072.             related to the returned error code.
  1073.  
  1074.           +o The parser is more flexible about the way strings are
  1075.             distributed on lines.  A single line XPM file can be
  1076.             read.
  1077.  
  1078.           +o A new level interface is provided to allow applications
  1079.             to do either icon editing or data caching.
  1080.  
  1081.           +o New structures are provided to deal with the lower
  1082.             level:  XpmImage, XpmColor, XpmInfos.
  1083.  
  1084.           +o xpm.h defines XpmFormat, XpmVersion, and XpmRevision
  1085.             numbers.
  1086.  
  1087.  
  1088.        3.12.5  _X_p_m__B_u_g__F_i_x_e_s__S_i_n_c_e__I_R_I_X__5_._3
  1089.  
  1090.           +o A segmentation fault occurring in some weird case.
  1091.  
  1092.           +o The list of pixels returned in XpmAttributes was wrong
  1093.             when two colors were defined as None in the read XPM.
  1094.  
  1095.           +o The parser was skipping white space reading extension
  1096.             strings.  This has been fixed so extension lines are
  1097.             now returned exactly as they are.
  1098.  
  1099.           +o When writing an XPM file, '-' characters are replaced
  1100.             with '_' characters in the array name, in order to get
  1101.             a valid C syntax name.
  1102.  
  1103.           +o XYPixmap format images are now handled correctly.
  1104.  
  1105.           +o XPM1 file with names using multiple '_' characters are
  1106.             now handled correctly.
  1107.  
  1108.           +o Reading certain binary files was leading to a bus
  1109.             error.
  1110.  
  1111.           +o The ? character is no longer used when writing an XPM
  1112.             file in order to avoid possible ANSI trigraphs.
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.